package pe.edu.upc.jtigers.svpn.service.implement;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.edu.upc.jtigers.svpn.aplication.bean.FiltroPlanBean;
import pe.edu.upc.jtigers.svpn.aplication.excepcion.DAOExcepcion;
import pe.edu.upc.jtigers.svpn.domain.data.PlanNegocioDao;
import pe.edu.upc.jtigers.svpn.domain.model.PlanNegocio;
import pe.edu.upc.jtigers.svpn.domain.service.PlanNegocioService;

@Service
public class PlanNegocioServiceImpl implements PlanNegocioService {

	@Autowired
	private PlanNegocioDao planNegocioDao;

	@Override
	public Collection<PlanNegocio> buscarPlanNegocio(FiltroPlanBean planNegocio) {
		Collection<PlanNegocio> lista = null;
		try {
			lista = planNegocioDao.buscarPlanNegocio(planNegocio);
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return lista;
	}

	@Override
	public PlanNegocio obtenerPlanNegocio(int idPlanNegocio) {
		PlanNegocio planNegocio = null;
		try {
			planNegocio = planNegocioDao.obtenerPlanNegocio(idPlanNegocio);
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return planNegocio;
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public PlanNegocio registrarPlanNegocio(PlanNegocio planNegocio) {
		try {
			planNegocio = planNegocioDao.registrarPlanNegocio(planNegocio);
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return planNegocio;
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public PlanNegocio cambiarEstado(int id, int idEstado) {
		PlanNegocio planNegocio = null;
		try {
			planNegocio = planNegocioDao.cambiarEstado(id, idEstado);
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return planNegocio;
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public PlanNegocio eliminarPlanNegocio(int id) {
		PlanNegocio planNegocio = null;
		try {
			planNegocio = planNegocioDao.eliminarPlanNegocio(id);
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return planNegocio;
	}

}
